<template>
  <div>
    <UploadExcel :on-success="onSuccess" />
  </div>
</template>

<script>
import { importEmployee } from '@/api/employees'
export default {
  methods: {
    async  onSuccess(data) {
      console.log(data)
      // 将导入进来的中文数据转成英文数据，才能发送到后台
      // 使用map映射方法
      const newData = data.results.map(user => { // data.results导入员工的数据
        // 遍历处理数组，处理完返新的数组
        return this.zhToEn(user)
      })
      console.log(18, newData)
      // 发起批量导入员工请求
      await importEmployee(newData) // 把处理好的英文格式数组发送到后台
      // 提示成功
      this.$message.success('导入成功')
      // 退回员工页面
      this.$router.back()
    },
    // 处理数据函数
    zhToEn(zhUser) { // zhUser导入的中文数据
      const enUser = {} // 处理好的英文数据
      const ziDian = {
        入职日期: 'timeOfEntry',
        手机号: 'mobile',
        姓名: 'username',
        转正日期: 'correctionTime',
        工号: 'workNumber'
      }
      // 遍历中文数据
      for (const key in zhUser) {
        // console.log('键名', key)
        // console.log('键值', zhUser[key])

        const enKey = ziDian[key] // enKey 英文的键名
        // console.log('enKey', enKey)
        const value = zhUser[key] // value 中文的键值
        // console.log('value', value)

        if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
          // 处理时间格式
          enUser[enKey] = new Date(this.formatExcelDate(value))
        } else {
          // 英文的键名等于中文数据的键值组成新的数组
          enUser[enKey] = value
        }
      }
      return enUser // 返回处理好的英文数据
    },
    // 时间格式处理
    formatExcelDate(num, format = '-') {
      if (!/^\d+$/.test(num)) return
      num = parseInt(num)
      let millisecond = 0 // 转化后的毫秒数
      if (num > 60) { // 对大于60的日期进行减1处理
        millisecond = (num - 25568 - 1) * 3600 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 3600 * 24 * 1000
      }
      const date = new Date(millisecond) // 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const m = date.getMonth() + 1
      const mm = m >= 10 ? m : '0' + m
      const d = date.getDate()
      const dd = d >= 10 ? d : '0' + d
      return yy + format + mm + format + dd // 返回格式化后的日期
    }
  }
}
</script>

<style>

</style>
